home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1995 February: Tool Chest / Dev.CD Feb 95 / Dev.CD Feb 95.toast / Tool Chest / Development Tools & Languages / Dylan Related / Dylan alpha demos / Hello src ƒ / hello.dylan < prev    next >
Encoding:
Text File  |  1994-12-13  |  3.5 KB  |  96 lines  |  [TEXT/ttxt]

  1. language: infix-dylan
  2. module: hello-module
  3.  
  4. // Copyright © 1994 by Apple Computer, Inc.  All rights reserved.
  5.  
  6. define class <hello-behavior> (<behavior>)
  7. end class;
  8.  
  9. define method behavior-setup-menus (behavior :: <behavior>,
  10.                                     next :: <list>,
  11.                                     main-handler :: <main-handler>) => ()
  12.   next-method();
  13.   
  14.   enable-item(#"new");
  15. end method;
  16.  
  17. define method behavior-event (behavior :: <hello-behavior>,
  18.                               next :: <list>,
  19.                               main-handler :: <main-handler>,
  20.                               event :: <menu-event>,
  21.                               id == #"new") => ()
  22.   ignore(behavior, next, main-handler, event, id);
  23.   make-hello-window();
  24. end method;
  25.  
  26. define method behavior-event (behavior :: <hello-behavior>,
  27.                               next :: <list>,
  28.                               main-handler :: <main-handler>,
  29.                               event :: <open-application-event>,
  30.                               id :: <object>) => ()
  31.   ignore(behavior, next, main-handler, event, id);
  32.   make-hello-window();
  33. end method;
  34.  
  35. define class <hello-message-property> (<property>)
  36. end class;
  37.  
  38. define method get-property-value (property :: <hello-message-property>,
  39.                                   property-type == $pContents) => value :: <ae-desc>;
  40.   ignore(property-type);
  41.   
  42.   let text-view = find-sub-view(property.container, #"hello-text");
  43.   make-descriptor(text-view.text);
  44. end method;
  45.  
  46. define method set-property-value (property :: <hello-message-property>,
  47.                                   property-type == $pContents,
  48.                                   data :: <ae-desc>) => ()
  49.   ignore(property-type);
  50.   let text-view = find-sub-view(property.container, #"hello-text");
  51.   text-view.text := as-string(data);
  52.   invalidate-all(text-view);
  53. end method;
  54.  
  55. define class <hello-scripting-behavior> (<behavior>)
  56. end class;
  57.  
  58. define method behavior-get-property (behavior :: <hello-scripting-behavior>,
  59.                                      next :: <list>,
  60.                                      window :: <window>,
  61.                                      property-type == $pContents) => <property>;
  62.   ignore(behavior, next);
  63.   
  64.   make(<hello-message-property>, 
  65.        property-type: property-type,
  66.        container: window);
  67. end method;
  68.  
  69. define constant make-hello-window =
  70.      method ()
  71.        let static-text = make(<static-text>,
  72.                               identifier: #"hello-text",
  73.                               location: point(10, 10),
  74.                               extent: point(200, 50),
  75.                               text: get-string($hello-string-id));
  76.        
  77.        let window = make-scrolling-window(list(static-text),
  78.                                           location: point(50, 50),
  79.                                           extent: point(300, 200),
  80.                                           title: get-string($hello-window-title-id),
  81.                                           resizable: #t,
  82.                                           zoomable: #t,
  83.                                           closable: #t,
  84.                                           target-view: static-text);
  85.        add-behavior(window, make(<hello-scripting-behavior>));
  86.        open(window);
  87.      end method;
  88.  
  89. define method init-hello () => ()
  90.   install-menu(get-resource-menu($file-menu-id));
  91.   install-menu(get-resource-menu($edit-menu-id));
  92.   
  93.   add-behavior (*main-handler*, make(<hello-behavior>));
  94. end method;
  95.  
  96. set-library-init-function(init-hello)